package com.skt.domain.DTO.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * 更新服装分类的请求体
 *
 * 说明：
 * - 用于 PUT /admin/categories/{id} 接口。
 * - 所有字段均为必填（业务要求更新时需提供完整信息）。
 * - 不包含 ID（由路径参数 {id} 提供）。
 * - 仅做基础格式与范围校验，复杂业务规则（如父子循环、同级重名）由 Service 层校验。
 */
@Data
public class UpdateCategoryRequest {

    @Schema(description = "分类名称", example = "汉服")
    @NotBlank(message = "分类名称不能为空")
    @Size(min = 1, max = 50, message = "分类名称长度必须在1~50个字符之间")
    private String name;

    @Schema(description = "父分类ID，0 表示顶级分类", example = "0")
    @NotNull(message = "父分类ID不能为空")
    @Min(value = 0, message = "父分类ID必须 >= 0")
    private Long parentId;

    @Schema(description = "排序值，越小越靠前", example = "10")
    @NotNull(message = "排序值不能为空")
    @Min(value = 0, message = "排序值不能小于0")
    private Integer sortOrder;
}